CLI-26: Sub-agent Windows shortcuts, /switch-agent command, and UUID identifiers#519
Merged
dwash96 merged 28 commits intoMay 20, 2026
Merged
Conversation
added 28 commits
May 18, 2026 17:33
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/nvidia_nim/deepseek-ai/deepseek-v4-pro)
Co-authored-by: cecli (openai/nvidia_nim/deepseek-ai/deepseek-v4-pro)
Co-authored-by: cecli (openai/nvidia_nim/deepseek-ai/deepseek-v4-pro)
Co-authored-by: cecli (openai/nvidia_nim/deepseek-ai/deepseek-v4-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/nvidia_nim/deepseek-ai/deepseek-v4-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Co-authored-by: cecli (openai/gemini_cli_local/gemini-2.5-pro)
Open
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR introduces the
/switch-agentcommand,Ctrl+Shiftkeyboard shortcuts for agent switching, and UUID-based identifiers for sub-agents — improving usability in terminals like Windows Git Bash whereCtrl+Altshortcuts are problematic, and enabling unambiguous identification when multiple sub-agents share the same name.Key Changes
1.
/switch-agentCommand/switch-agent <agent-name>allows users to switch between the primary agent and sub-agents by name./switch-agentcommand is intercepted in the TUI input handler and processed immediately without LLM round-tripping, ensuring instant switching.foreground_uuiddirectly on theAgentService.2. UUID Identifiers for Sub-Agents
reviewer (a1b)) to uniquely identify agents when duplicate names exist./switch-agentcommand resolves agents by:"name (uuid)"format — e.g.,/switch-agent reviewer (a1b)/switch-agent reviewer/switch-agent a1b/switch-agentalways appends the UUID prefix to sub-agent names, making disambiguation seamless.3.
Ctrl+ShiftKeybindingsCtrl+Shift+Left,Ctrl+Shift+Right, andCtrl+Shift+Upfor agent switching, providing an alternative to the existingCtrl+Altshortcuts that don't work well on Windows Git Bash.4. Synchronous Linter & Command Execution
asyncio.to_threadforrun_cmd). This simplifies the codebase and improves reliability in interrupt handling.run_cmd_asyncandinterruptible_async_generator— no longer needed.lint,py_lint,flake8_lint,run_cmd) are now synchronous, usingsubprocess.rundirectly.5. Bug Fixes
cecli/commands/switch_agent.py.cecli/commands/invoke_agent.pythat was causing sub-agent invocation to fail (addedMessageTag.CURto the summary message).Ctrl+Alt+Rightinstead of dynamic key lookup that could fail.6. Cleanup
interrupt_eventparameter fromLinter.__init__and all lint-related methods.notify_user_input_requiredcall fromInputOutput.base_coder.py.Path()conversion inSkillsManager.find_skills.Files Changed
cecli/commands/switch_agent.py— New/switch-agentcommand implementationcecli/commands/__init__.py— RegisteredSwitchAgentCommandcecli/commands/invoke_agent.py— Fixed sub-agent invocation, addedMessageTag.CURcecli/commands/spawn_agent.py— Simplified spawn messagececli/commands/lint.py— Synchronous lint callcecli/commands/run.py— Synchronousrun_cmdviaasyncio.to_threadcecli/tui/app.py—Ctrl+Shiftkeybindings,/switch-agentinterception,switch_agentmessage handlingcecli/coders/agent_coder.py— Synchronous lint, removed interruptible sleepcecli/coders/base_coder.py— Synchronous lint, removed interruptible formatting/streamingcecli/linter.py— Fully synchronous linter withsubprocess.runcecli/run_cmd.py— Removedrun_cmd_asynccecli/helpers/coroutines.py— Removedinterruptible_async_generatorcecli/helpers/skills.py— Removed unusedPath()conversioncecli/io.py— Removed notification cooldown andnotify_user_input_requiredcecli/models.py— Removed interruptible wrapper aroundlitellm.acompletiontests/commands/test_switch_agent.py— Tests for the new commandWhy Needed
Ctrl+Altshortcuts don't work in Windows Git Bash —Ctrl+Shiftprovides a working alternative./switch-agentcommand gives users a CLI-based way to switch agents, with tab-completion for convenience.